package com.hup.minicontroller.common.netty.model;

import com.hup.minicontroller.common.netty.handler.SerializerHandler;
import com.hup.minicontroller.common.netty.handler.SerializerHandler.JSONSerializer;

import java.io.Serializable;

/**
 * 基本帧数据结构;
 * 关于字段数据类型对数据体长度的影响: 详见类注释 {@link SerializerHandler}
 *
 * @author hugan
 * @date 2021/4/25
 */
public interface BaseDataPacket extends Serializable {

    /**
     * 数据类型,用于socket收到消息时,把原始数据转成对象
     */
    int getType();

    /**
     * 保留方法,仅在收到数据进行解码反序列化时被调用
     *
     * @param length 数据体的长度,不是整个帧数据的长度('不含帧头,类型,数据体长度'占用的字节数)
     * @apiNote 实现类中加入 {@code Integer dataLength}后,使用{@link JSONSerializer}时,不会影响发送数据的长度, 详见{@link SerializerHandler}
     */
    default void setDataLength(Integer length) { }
}
